This patch is taken from the opam repository:
https://github.com/ocaml/opam-repository/blob/master/packages/unison/unison.2.51.2/files/ocaml48.patch

It fixes compatibility with changes introduced in OCaml 4.08.

diff --git a/src/Makefile.OCaml b/src/Makefile.OCaml
index 7cefa2e..378fc8b 100644
--- a/src/Makefile.OCaml
+++ b/src/Makefile.OCaml
@@ -272,7 +272,7 @@ endif
 
 # Gtk GUI
 ifeq ($(UISTYLE), gtk)
-  CAMLFLAGS+=-I +lablgtk
+  CAMLFLAGS+=-I $(LABLGTKLIB)
   OCAMLOBJS+=pixmaps.cmo uigtk.cmo linkgtk.cmo
   OCAMLLIBS+=lablgtk.cma
 endif
@@ -282,7 +282,7 @@ OCAMLFIND := $(shell command -v ocamlfind 2> /dev/null)
 
 ifeq ($(UISTYLE), gtk2)
   ifndef OCAMLFIND
-    CAMLFLAGS+=-I +lablgtk2
+    CAMLFLAGS+=-I $(LABLGTK2LIB)
   else
     CAMLFLAGS+=$(shell $(OCAMLFIND) query -i-format lablgtk2 )
   endif
diff --git a/src/files.ml b/src/files.ml
index 5ff1881..1d1fbcc 100644
--- a/src/files.ml
+++ b/src/files.ml
@@ -734,7 +734,7 @@ let get_files_in_directory dir =
   with End_of_file ->
     dirh.System.closedir ()
   end;
-  Sort.list (<) !files
+  List.sort String.compare !files
 
 let ls dir pattern =
   Util.convertUnixErrorsToTransient
diff --git a/src/recon.ml b/src/recon.ml
index 2c619bb..2412c18 100644
--- a/src/recon.ml
+++ b/src/recon.ml
@@ -661,8 +661,8 @@ let rec reconcile
 
 (* Sorts the paths so that they will be displayed in order                   *)
 let sortPaths pathUpdatesList =
-  Sort.list
-    (fun (p1, _) (p2, _) -> Path.compare p1 p2 <= 0)
+  List.sort
+    Path.compare
     pathUpdatesList
 
 let rec enterPath p1 p2 t =
diff --git a/src/system/system_generic.ml b/src/system/system_generic.ml
index 453027d..c2288b8 100755
--- a/src/system/system_generic.ml
+++ b/src/system/system_generic.ml
@@ -47,7 +47,7 @@ let open_out_gen = open_out_gen
 let chmod = Unix.chmod
 let chown = Unix.chown
 let utimes = Unix.utimes
-let link = Unix.link
+let link s d = Unix.link s d
 let openfile = Unix.openfile
 let opendir f =
   let h = Unix.opendir f in
diff --git a/src/uigtk2.ml b/src/uigtk2.ml
index fbc5d8f..4e82cc2 100644
--- a/src/uigtk2.ml
+++ b/src/uigtk2.ml
@@ -94,7 +94,7 @@ let icon =
 let icon =
   let p = GdkPixbuf.create ~width:48 ~height:48 ~has_alpha:true () in
   Gpointer.blit
-    (Gpointer.region_of_string Pixmaps.icon_data) (GdkPixbuf.get_pixels p);
+    (Gpointer.region_of_bytes Pixmaps.icon_data) (GdkPixbuf.get_pixels p);
   p
 
 let leftPtrWatch =
